const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://localhost:27017/";

function _connect(callback){
   MongoClient.connect(url,{ useUnifiedTopology: true }, function(err, db) {
      if (err) throw err;
      callback(db)
   });
}
//查询（登录）
// 查询封装的时候，考虑是否需要分页是否需要排序
// 需要书写函数参数的默认值，因为用户有可能不会书写
exports.findAll=function(dbname,tablename,data,callback,mysort={},myskip=0,mylimit=0){
	_connect(function(db){
		var dbo = db.db(dbname);
		// sort排序
	    // skip跳过多少条数据
	    // limit()限制取数据的数量
		dbo.collection(tablename).find(data).sort(mysort).skip(myskip).limit(mylimit).toArray(function(err, result) { 
			// 返回集合中所有数据
			if (err) throw err;
			db.close();
			callback(result)
		});
	})
}
//增加数据（注册）
exports.add=function(dbname,tablename,data,callback){
	_connect(function(db){
		var dbo = db.db(dbname);
		if (data instanceof Array) {
			data=data
		}else{
			data=[data]
		}
		dbo.collection(tablename).insertMany(data,function(err, result) { 
		    // 返回集合中所有数据
		    if (err) throw err;
		    //console.log(result);
		    db.close();
		    callback(result)
		});
	})
}
//删除数据（注销）
exports.remove=function(dbname,tablename,data,callback){
	_connect(function(db){
		var dbo = db.db(dbname);
		dbo.collection(tablename).deleteOne(data,function(err, result) { 
		    // 返回集合中所有数据
		    if (err) throw err;
		    db.close();
		    callback(result)
		});
	})
}
//更改数据（更改爱好）
exports.change=function(dbname,tablename,olddata,data,callback){
	_connect(function(db){
		var dbo = db.db(dbname);
		dbo.collection(tablename).updateMany(olddata,data,function(err, result) { 
		    // 返回集合中所有数据
		    if (err) throw err;
		    db.close();
		    callback(result)
		});
	})
}